在 Linux 中檔案權限 跟 Windows 一樣有讀取、寫入、執行的設定,也可以針對哪些帳號及群組做各別設定。
drwxr-xr-x. 3 root root 51 9月 25 23:22 tmp
上方是一個 tmp
的詳細資訊。而前方 drwxr-xr-x
這段代表的是權限值。
rwx
權限代碼分別為:
代碼 | 目的 | 檔案說明 | 目錄說明 | 權限數值 |
---|---|---|---|---|
r | 讀取(read) | 可使用 cat 指令讀取檔案。 |
可使用 ls 或 ll 列出詳細清單 |
4 |
w | 寫入(write) | 可新增、刪除、修改、移動檔案。 | 可建立、刪除、修改、移動目錄。 | 2 |
x | 執行(execute) | 檔案可被執行。 | 可使用 cd 訪問該目錄 |
1 |
- | 不允許 | 禁止讀取、寫入、執行檔案。 | 禁止對目錄做讀、寫、執行。 | 0 |
[root@localhost ~]# ls -l
總計 12
-rw-------. 1 root root 1416 9月 19 14:04 anaconda-ks.cfg
-rw-r--r--. 1 root root 6 9月 26 22:06 data
-rw-r--r--. 1 root root 0 9月 22 21:43 edm.php
-rw-r--r--. 1 root root 19 9月 26 22:16 test.txt
drwxr-xr-x. 3 root root 51 9月 25 23:22 tmp
drwxr-xr-x. 2 root root 23 9月 22 22:06 tmp2
※ chmod
指令意思是 change mode。
[root@localhost ~]# chmod [權限數值] [目標]
權限代碼除了可以用 rwx
表示以外,還可以使用 八進位數值做表示
rwx
各別八進位值
權限代碼 | 權限數值 |
---|---|
r | 4 |
w | 2 |
x | 1 |
- | 0 |
rwx
權限組合
八進位 | 每組權限 | 二進位(r+w+x) |
---|---|---|
7 | rwx | 111(4+2+1) |
6 | rw- | 110(4+2+0) |
5 | r-x | 101(4+0+1) |
4 | r-- | 100(4+0+0) |
3 | -wx | 011(0+2+1) |
2 | -w- | 010(0+2+0) |
1 | --x | 001(0+0+1) |
0 | --- | 000(0+0+0) |
以上方tmp
目錄的權限 drwxr-xr-x
,轉換數值為 755
。
若 tmp
要完全公開,擁有者、群組、其他人都擁有 讀、寫、執行的權限
[root@localhost ~]# chmod 777 tmp
權限就會變更 drwxrwxrwx
。
drwxrwxrwx. 3 root root 51 9月 25 23:22 tmp
代碼 | 類型 | 對象 |
---|---|---|
u | user | 檔案擁有者(第一組) |
g | group | 檔案擁有者群組(第二組) |
o | other | 其他使用者(第三組) |
a | all | 全部使用者(以上三組) |
符號表
符號 | 說明 |
---|---|
+ | 增加權限 |
- | 減少權限 |
= | 重新定義權限 |
, | 權限一起處理 |
※ 以下為獨立範例
其他使用者 去除 寫入權限
[root@localhost ~]# chmod o-w tmp
全部人使用者 去除 執行權限
[root@localhost ~]# chmod a-x tmp
or
[root@localhost ~]# chmod -x tmp
擁有者群組+其他使用者 去除 寫入權限
[root@localhost ~]# chmod go-w tmp
擁有者權限 改為可讀可寫
[root@localhost ~]# chmod u=rw tmp
擁有者群組 增加讀取權限,其他使用者 去除 讀取+執行權限
[root@localhost ~]# chmod u+r,o-rx tmp
檔案或目錄的擁有者可以使用 chown
變更為其他使用者帳號。
※ chown
指令意思是 change owner。
這個指令其實對我來說很好用,因為我有時候在蓋資料庫的時候,原本解壓縮的擁有者跟群組都為 mysql
,可是忘記在哪個環節錯了,兩者都變成 root
。
※ 更改擁有者
[root@localhost ~]# chown [變更後的擁有者帳號] [檔案或目錄]
※ 更改群組
[root@localhost ~]# chown [變更後的群組] [檔案或目錄]
※ 更改擁有者+群組
[root@localhost ~]# chown [變更後的擁有者帳號]:[變更後的群組] [檔案或目錄]
or
[root@localhost ~]# chown [變更後的擁有者帳號].[變更後的群組] [檔案或目錄]
將 testdb
目錄「擁有者」改為 mysql
[root@localhost ~]# chown mysql testdb
將 testdb
目錄「群組」改為 mysql
[root@localhost ~]# chown .mysql testdb
將 testdb
目錄「擁有者」改為 mysql
+「群組」改為mysql
[root@localhost ~]# chown mysql:mysql testdb
變更檔案群組,雖然可以使用 chown
指令 做變更,但還是要了解一下 chgrp
這個指令。
※ chgrp
指令意思是 change group。
[root@localhost ~]# chgrp [變更後的群組] [檔案或目錄]
將 testdb
目錄「群組」改為 mysql
[root@localhost ~]# chgrp mysql testdb